home *** CD-ROM | disk | FTP | other *** search
/ Team Palmtops 7 / Palmtops_numero07.iso / WinCE / SDKWindowsCE / HandHeldPCPro30 / sdk.exe / Jupiter SDK / data1.cab / Emulation_Include_Files / msacm.h < prev    next >
Encoding:
C/C++ Source or Header  |  1999-02-19  |  34.1 KB  |  1,179 lines

  1. // -----------------------------------------------------------------------------
  2. //
  3. //  THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF
  4. //  ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO
  5. //  THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A
  6. //  PARTICULAR PURPOSE.
  7. //  Copyright (c) 1995-1998  Microsoft Corporation
  8. //  
  9. // -----------------------------------------------------------------------------
  10. //
  11. //  msacm.h     Audio Compression Manager Public Header File
  12. //
  13. // -----------------------------------------------------------------------------
  14.  
  15. #ifndef _INC_ACM
  16. #define _INC_ACM        /* #defined if msacm.h has been included */
  17.  
  18. #if !defined(_INC_MMREG) || (_INC_MMREG < 142)
  19. #ifndef RC_INVOKED
  20. #error MMREG.H version 142 or greater to be included first
  21. #endif
  22. #endif
  23.  
  24. #ifndef RC_INVOKED
  25. #pragma pack(1)         /* Assume byte packing throughout */
  26. #endif  /* RC_INVOKED */
  27.  
  28. #ifdef __cplusplus
  29. extern "C" {            /* Assume C declarations for C++ */
  30. #endif  /* __cplusplus */
  31.  
  32.  
  33. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  34. //
  35. //
  36. //
  37. //
  38. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  39.  
  40. #ifndef DRV_MAPPER_PREFERRED_INPUT_GET
  41. #define DRV_MAPPER_PREFERRED_INPUT_GET  (DRV_USER + 0)
  42. #endif
  43.  
  44. #ifndef DRV_MAPPER_PREFERRED_OUTPUT_GET
  45. #define DRV_MAPPER_PREFERRED_OUTPUT_GET (DRV_USER + 2)
  46. #endif
  47.  
  48.  
  49. #ifndef DRVM_MAPPER_STATUS
  50. #define DRVM_MAPPER_STATUS              (0x2000)
  51. #endif
  52.  
  53. #ifndef WIDM_MAPPER_STATUS
  54. #define WIDM_MAPPER_STATUS              (DRVM_MAPPER_STATUS + 0)
  55. #define WAVEIN_MAPPER_STATUS_DEVICE     0
  56. #define WAVEIN_MAPPER_STATUS_MAPPED     1
  57. #define WAVEIN_MAPPER_STATUS_FORMAT     2
  58. #endif
  59.  
  60. #ifndef WODM_MAPPER_STATUS
  61. #define WODM_MAPPER_STATUS              (DRVM_MAPPER_STATUS + 0)
  62. #define WAVEOUT_MAPPER_STATUS_DEVICE    0
  63. #define WAVEOUT_MAPPER_STATUS_MAPPED    1
  64. #define WAVEOUT_MAPPER_STATUS_FORMAT    2
  65. #endif
  66.  
  67.  
  68. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  69. //
  70. //
  71. //
  72. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  73. #define ACMAPI              WINAPI
  74.  
  75. typedef DWORD FOURCC;
  76.  
  77.  
  78. //
  79. //  there are four types of 'handles' used by the ACM. the first three
  80. //  are unique types that define specific objects:
  81. //
  82. //  HACMDRIVERID: used to _identify_ an ACM driver. this identifier can be
  83. //  used to _open_ the driver for querying details, etc about the driver.
  84. //
  85. //  HACMDRIVER: used to manage a driver (codec, filter, etc). this handle
  86. //  is much like a handle to other media drivers--you use it to send
  87. //  messages to the converter, query for capabilities, etc.
  88. //
  89. //  HACMSTREAM: used to manage a 'stream' (conversion channel) with the
  90. //  ACM. you use a stream handle to convert data from one format/type
  91. //  to another--much like dealing with a file handle.
  92. //
  93. //
  94. //  the fourth handle type is a generic type used on ACM functions that
  95. //  can accept two or more of the above handle types (for example the
  96. //  acmMetrics and acmDriverID functions).
  97. //
  98. //  HACMOBJ: used to identify ACM objects. this handle is used on functions
  99. //  that can accept two or more ACM handle types.
  100. //
  101. DECLARE_HANDLE(HACMDRIVERID);
  102. typedef HACMDRIVERID       *PHACMDRIVERID;
  103. typedef HACMDRIVERID   FAR *LPHACMDRIVERID;
  104.  
  105. DECLARE_HANDLE(HACMDRIVER);
  106. typedef HACMDRIVER         *PHACMDRIVER;
  107. typedef HACMDRIVER     FAR *LPHACMDRIVER;
  108.  
  109. DECLARE_HANDLE(HACMSTREAM);
  110. typedef HACMSTREAM         *PHACMSTREAM;
  111. typedef HACMSTREAM     FAR *LPHACMSTREAM;
  112.  
  113. DECLARE_HANDLE(HACMOBJ);
  114. typedef HACMOBJ            *PHACMOBJ;
  115. typedef HACMOBJ        FAR *LPHACMOBJ;
  116.  
  117.  
  118.  
  119. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  120. //
  121. //  ACM Error Codes
  122. //
  123. //  Note that these error codes are specific errors that apply to the ACM
  124. //  directly--general errors are defined as MMSYSERR_*.
  125. //
  126. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  127.  
  128. #ifndef _MMRESULT_
  129. #define _MMRESULT_
  130. typedef UINT                MMRESULT;
  131. #endif
  132.  
  133. #define ACMERR_BASE         (512)
  134. #define ACMERR_NOTPOSSIBLE  (ACMERR_BASE + 0)
  135. #define ACMERR_BUSY         (ACMERR_BASE + 1)
  136. #define ACMERR_UNPREPARED   (ACMERR_BASE + 2)
  137. #define ACMERR_CANCELED     (ACMERR_BASE + 3)
  138.  
  139.  
  140. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  141. //
  142. //  ACM Window Messages
  143. //
  144. //  These window messages are sent by the ACM or ACM drivers to notify
  145. //  applications of events.
  146. //
  147. //  Note that these window message numbers will also be defined in
  148. //  mmsystem.
  149. //
  150. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  151.  
  152. #define MM_ACM_OPEN         (MM_STREAM_OPEN)  // conversion callback messages
  153. #define MM_ACM_CLOSE        (MM_STREAM_CLOSE)
  154. #define MM_ACM_DONE         (MM_STREAM_DONE)
  155.  
  156.  
  157. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  158. //
  159. //  acmGetVersion()
  160. //
  161. //  the ACM version is a 32 bit number that is broken into three parts as 
  162. //  follows:
  163. //
  164. //      bits 24 - 31:   8 bit _major_ version number
  165. //      bits 16 - 23:   8 bit _minor_ version number
  166. //      bits  0 - 15:   16 bit build number
  167. //
  168. //  this is then displayed as follows:
  169. //
  170. //      bMajor = (BYTE)(dwVersion >> 24)
  171. //      bMinor = (BYTE)(dwVersion >> 16) & 
  172. //      wBuild = LOWORD(dwVersion)
  173. //
  174. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  175.  
  176. DWORD ACMAPI acmGetVersion
  177. (
  178.     void
  179. );
  180.  
  181.  
  182. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  183. //
  184. //  acmMetrics()
  185. //
  186. //
  187. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  188.  
  189. MMRESULT ACMAPI acmMetrics
  190. (
  191.     HACMOBJ                 hao,
  192.     UINT                    uMetric,
  193.     LPVOID                  pMetric
  194. );
  195.  
  196. #define ACM_METRIC_COUNT_DRIVERS            1
  197. #define ACM_METRIC_COUNT_CODECS             2
  198. #define ACM_METRIC_COUNT_CONVERTERS         3
  199. #define ACM_METRIC_COUNT_FILTERS            4
  200. #define ACM_METRIC_COUNT_DISABLED           5
  201. #define ACM_METRIC_COUNT_HARDWARE           6
  202. #define ACM_METRIC_COUNT_LOCAL_DRIVERS      20
  203. #define ACM_METRIC_COUNT_LOCAL_CODECS       21
  204. #define ACM_METRIC_COUNT_LOCAL_CONVERTERS   22
  205. #define ACM_METRIC_COUNT_LOCAL_FILTERS      23
  206. #define ACM_METRIC_COUNT_LOCAL_DISABLED     24
  207. #define ACM_METRIC_HARDWARE_WAVE_INPUT      30
  208. #define ACM_METRIC_HARDWARE_WAVE_OUTPUT     31
  209. #define ACM_METRIC_MAX_SIZE_FORMAT          50
  210. #define ACM_METRIC_MAX_SIZE_FILTER          51
  211. #define ACM_METRIC_DRIVER_SUPPORT           100
  212. #define ACM_METRIC_DRIVER_PRIORITY          101
  213.  
  214.  
  215. //--------------------------------------------------------------------------;
  216. //
  217. //  ACM Drivers
  218. //
  219. //
  220. //
  221. //
  222. //--------------------------------------------------------------------------;
  223.  
  224. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  225. //
  226. //  acmDriverEnum()
  227. //
  228. //
  229. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  230.  
  231. typedef BOOL (CALLBACK *ACMDRIVERENUMCB)
  232. (
  233.     HACMDRIVERID            hadid,
  234.     DWORD                   dwInstance,
  235.     DWORD                   fdwSupport
  236. );
  237.  
  238. MMRESULT ACMAPI acmDriverEnum
  239. (
  240.     ACMDRIVERENUMCB         fnCallback,
  241.     DWORD                   dwInstance,
  242.     DWORD                   fdwEnum
  243. );
  244.  
  245. #define ACM_DRIVERENUMF_NOLOCAL     0x40000000L
  246. #define ACM_DRIVERENUMF_DISABLED    0x80000000L
  247.  
  248.  
  249.  
  250.  
  251. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  252. //
  253. //  acmDriverID()
  254. //
  255. //
  256. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  257.  
  258. MMRESULT ACMAPI acmDriverID
  259. (
  260.     HACMOBJ                 hao,
  261.     LPHACMDRIVERID          phadid,
  262.     DWORD                   fdwDriverID
  263. );
  264.  
  265.  
  266.  
  267. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  268. //
  269. //  acmDriverAdd()
  270. //
  271. //
  272. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  273.  
  274. MMRESULT ACMAPI acmDriverAdd
  275. (
  276.     LPHACMDRIVERID          phadid,
  277.     HINSTANCE               hinstModule,
  278.     LPARAM                  lParam, 
  279.     DWORD                   dwPriority,
  280.     DWORD                   fdwAdd
  281. );
  282.  
  283.  
  284. #define ACM_DRIVERADDF_NOTIFYHWND   0x00000004L  // lParam is notify hwnd
  285.  
  286.  
  287.  
  288. //
  289. //  prototype for ACM driver procedures that are installed as _functions_
  290. //  or _notifations_ instead of as a standalone installable driver.
  291. //
  292. typedef LRESULT (CALLBACK *ACMDRIVERPROC)(DWORD, HACMDRIVERID, UINT, LPARAM, LPARAM);
  293. typedef ACMDRIVERPROC FAR *LPACMDRIVERPROC;
  294.  
  295. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  296. //
  297. //  acmDriverRemove()
  298. //
  299. //
  300. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  301.  
  302. MMRESULT ACMAPI acmDriverRemove
  303. (
  304.     HACMDRIVERID            hadid,
  305.     DWORD                   fdwRemove
  306. );
  307.  
  308.  
  309. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  310. //
  311. //  acmDriverOpen()
  312. //
  313. //
  314. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  315.  
  316. MMRESULT ACMAPI acmDriverOpen
  317. (
  318.     LPHACMDRIVER            phad, 
  319.     HACMDRIVERID            hadid,
  320.     DWORD                   fdwOpen
  321. );
  322.  
  323.  
  324. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  325. //
  326. //  acmDriverClose()
  327. //
  328. //
  329. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  330.  
  331. MMRESULT ACMAPI acmDriverClose
  332. (
  333.     HACMDRIVER              had,
  334.     DWORD                   fdwClose
  335. );
  336.  
  337.  
  338. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  339. //
  340. //  acmDriverMessage()
  341. //
  342. //
  343. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  344.  
  345. LRESULT ACMAPI acmDriverMessage
  346. (
  347.     HACMDRIVER              had,
  348.     UINT                    uMsg, 
  349.     LPARAM                  lParam1,
  350.     LPARAM                  lParam2
  351. );
  352.  
  353.  
  354. //
  355. //
  356. //
  357. //
  358. #define DRV_USER 0x4000
  359. #define ACMDM_USER                  (DRV_USER + 0x0000)
  360. #define ACMDM_RESERVED_LOW          (DRV_USER + 0x2000)
  361. #define ACMDM_RESERVED_HIGH         (DRV_USER + 0x2FFF)
  362.  
  363. #define ACMDM_BASE                  ACMDM_RESERVED_LOW
  364.  
  365. #define ACMDM_DRIVER_ABOUT          (ACMDM_BASE + 11)
  366.  
  367.  
  368. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  369. //
  370. //  acmDriverPriority
  371. //
  372. //
  373. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  374.  
  375. MMRESULT ACMAPI acmDriverPriority
  376. (
  377.     HACMDRIVERID            hadid,
  378.     DWORD                   dwPriority,
  379.     DWORD                   fdwPriority
  380. );
  381.  
  382.  
  383. #define ACM_DRIVERPRIORITYF_ENABLE      0x00000001L
  384. #define ACM_DRIVERPRIORITYF_DISABLE     0x00000002L
  385. #define ACM_DRIVERPRIORITYF_ABLEMASK    0x00000003L
  386. #define ACM_DRIVERPRIORITYF_BEGIN       0x00010000L
  387. #define ACM_DRIVERPRIORITYF_END         0x00020000L
  388. #define ACM_DRIVERPRIORITYF_DEFERMASK   0x00030000L
  389.  
  390.  
  391.  
  392. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  393. //
  394. //  acmDriverDetails()
  395. //
  396. //
  397. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  398.  
  399. //
  400. //  ACMDRIVERDETAILS
  401. //
  402. //  the ACMDRIVERDETAILS structure is used to get various capabilities from
  403. //  an ACM driver (codec, converter, filter).
  404. //
  405. #define ACMDRIVERDETAILS_SHORTNAME_CHARS    32
  406. #define ACMDRIVERDETAILS_LONGNAME_CHARS     128
  407. #define ACMDRIVERDETAILS_COPYRIGHT_CHARS    80
  408. #define ACMDRIVERDETAILS_LICENSING_CHARS    128
  409. #define ACMDRIVERDETAILS_FEATURES_CHARS     512
  410.  
  411. typedef struct tACMDRIVERDETAILS
  412. {
  413.     DWORD           cbStruct;           // number of valid bytes in structure
  414.  
  415.     FOURCC          fccType;            // compressor type 'audc'
  416.     FOURCC          fccComp;            // sub-type (not used; reserved)
  417.  
  418.     WORD            wMid;               // manufacturer id
  419.     WORD            wPid;               // product id
  420.  
  421.     DWORD           vdwACM;             // version of the ACM *compiled* for
  422.     DWORD           vdwDriver;          // version of the driver
  423.  
  424.     DWORD           fdwSupport;         // misc. support flags
  425.     DWORD           cFormatTags;        // total unique format tags supported
  426.     DWORD           cFilterTags;        // total unique filter tags supported
  427.  
  428.     HICON           hicon;              // handle to custom icon
  429.  
  430.     WCHAR           szShortName[ACMDRIVERDETAILS_SHORTNAME_CHARS];
  431.     WCHAR           szLongName[ACMDRIVERDETAILS_LONGNAME_CHARS];
  432.     WCHAR           szCopyright[ACMDRIVERDETAILS_COPYRIGHT_CHARS];
  433.     WCHAR           szLicensing[ACMDRIVERDETAILS_LICENSING_CHARS];
  434.     WCHAR           szFeatures[ACMDRIVERDETAILS_FEATURES_CHARS];
  435.  
  436. } ACMDRIVERDETAILS, *PACMDRIVERDETAILS, FAR *LPACMDRIVERDETAILS;
  437.  
  438.  
  439. //
  440. //  ACMDRIVERDETAILS.fccType
  441. //
  442. //  ACMDRIVERDETAILS_FCCTYPE_AUDIOCODEC: the FOURCC used in the fccType
  443. //  field of the ACMDRIVERDETAILS structure to specify that this is an ACM
  444. //  codec designed for audio.
  445. //
  446. //
  447. //  ACMDRIVERDETAILS.fccComp
  448. //
  449. //  ACMDRIVERDETAILS_FCCCOMP_UNDEFINED: the FOURCC used in the fccComp
  450. //  field of the ACMDRIVERDETAILS structure. this is currently an unused
  451. //  field.
  452. //
  453. #define ACMDRIVERDETAILS_FCCTYPE_AUDIOCODEC mmioFOURCC('a', 'u', 'd', 'c')
  454. #define ACMDRIVERDETAILS_FCCCOMP_UNDEFINED  mmioFOURCC('\0', '\0', '\0', '\0')
  455.  
  456.  
  457. //
  458. //  the following flags are used to specify the type of conversion(s) that
  459. //  the converter/codec/filter supports. these are placed in the fdwSupport
  460. //  field of the ACMDRIVERDETAILS structure. note that a converter can
  461. //  support one or more of these flags in any combination.
  462. //
  463. //  ACMDRIVERDETAILS_SUPPORTF_CODEC: this flag is set if the driver supports
  464. //  conversions from one format tag to another format tag. for example, if a
  465. //  converter compresses WAVE_FORMAT_PCM to WAVE_FORMAT_ADPCM, then this bit
  466. //  should be set.
  467. //
  468. //  ACMDRIVERDETAILS_SUPPORTF_CONVERTER: this flags is set if the driver
  469. //  supports conversions on the same format tag. as an example, the PCM
  470. //  converter that is built into the ACM sets this bit (and only this bit)
  471. //  because it converts only PCM formats (bits, sample rate).
  472. //
  473. //  ACMDRIVERDETAILS_SUPPORTF_FILTER: this flag is set if the driver supports
  474. //  transformations on a single format. for example, a converter that changed
  475. //  the 'volume' of PCM data would set this bit. 'echo' and 'reverb' are
  476. //  also filter types.
  477. //
  478. //  ACMDRIVERDETAILS_SUPPORTF_HARDWARE: this flag is set if the driver supports
  479. //  hardware input and/or output through a waveform device.
  480. //
  481. //  ACMDRIVERDETAILS_SUPPORTF_ASYNC: this flag is set if the driver supports
  482. //  async conversions.
  483. //
  484. //
  485. //  ACMDRIVERDETAILS_SUPPORTF_LOCAL: this flag is set _by the ACM_ if a
  486. //  driver has been installed local to the current task. this flag is also
  487. //  set in the fdwSupport argument to the enumeration callback function
  488. //  for drivers.
  489. //
  490. //  ACMDRIVERDETAILS_SUPPORTF_DISABLED: this flag is set _by the ACM_ if a
  491. //  driver has been disabled. this flag is also passed set in the fdwSupport
  492. //  argument to the enumeration callback function for drivers.
  493. //
  494. #define ACMDRIVERDETAILS_SUPPORTF_CODEC     0x00000001L
  495. #define ACMDRIVERDETAILS_SUPPORTF_CONVERTER 0x00000002L
  496. #define ACMDRIVERDETAILS_SUPPORTF_FILTER    0x00000004L
  497. #define ACMDRIVERDETAILS_SUPPORTF_HARDWARE  0x00000008L
  498. #define ACMDRIVERDETAILS_SUPPORTF_ASYNC     0x00000010L
  499. #define ACMDRIVERDETAILS_SUPPORTF_LOCAL     0x40000000L
  500. #define ACMDRIVERDETAILS_SUPPORTF_DISABLED  0x80000000L
  501.  
  502.  
  503. MMRESULT ACMAPI acmDriverDetails
  504. (
  505.     HACMDRIVERID            hadid,
  506.     LPACMDRIVERDETAILS      padd,
  507.     DWORD                   fdwDetails
  508. );
  509.  
  510.  
  511.  
  512.  
  513. //--------------------------------------------------------------------------;
  514. //
  515. //  ACM Format Tags
  516. //
  517. //
  518. //
  519. //
  520. //--------------------------------------------------------------------------;
  521.  
  522. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  523. //
  524. //  acmFormatTagDetails()
  525. //
  526. //
  527. //
  528. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  529.  
  530. #define ACMFORMATTAGDETAILS_FORMATTAG_CHARS 48
  531.  
  532. typedef struct tACMFORMATTAGDETAILSW
  533. {
  534.     DWORD           cbStruct;
  535.     DWORD           dwFormatTagIndex;
  536.     DWORD           dwFormatTag;
  537.     DWORD           cbFormatSize;
  538.     DWORD           fdwSupport;
  539.     DWORD           cStandardFormats;
  540.     WCHAR           szFormatTag[ACMFORMATTAGDETAILS_FORMATTAG_CHARS];
  541.  
  542. } ACMFORMATTAGDETAILS, *PACMFORMATTAGDETAILS, FAR *LPACMFORMATTAGDETAILS;
  543.  
  544. MMRESULT ACMAPI acmFormatTagDetails
  545. (
  546.     HACMDRIVER              had,
  547.     LPACMFORMATTAGDETAILS   paftd,
  548.     DWORD                   fdwDetails
  549. );
  550.  
  551. #define ACM_FORMATTAGDETAILSF_INDEX         0x00000000L
  552. #define ACM_FORMATTAGDETAILSF_FORMATTAG     0x00000001L
  553. #define ACM_FORMATTAGDETAILSF_LARGESTSIZE   0x00000002L
  554. #define ACM_FORMATTAGDETAILSF_QUERYMASK     0x0000000FL
  555.  
  556.  
  557.  
  558. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  559. //
  560. //  acmFormatTagEnum()
  561. //
  562. //
  563. //
  564. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  565.  
  566. typedef BOOL (CALLBACK *ACMFORMATTAGENUMCB)
  567. (
  568.     HACMDRIVERID            hadid,
  569.     LPACMFORMATTAGDETAILS   paftd,
  570.     DWORD                   dwInstance,
  571.     DWORD                   fdwSupport
  572. );
  573.  
  574. MMRESULT ACMAPI acmFormatTagEnum
  575. (
  576.     HACMDRIVER              had,
  577.     LPACMFORMATTAGDETAILS   paftd,
  578.     ACMFORMATTAGENUMCB      fnCallback,
  579.     DWORD                   dwInstance, 
  580.     DWORD                   fdwEnum
  581. );
  582.  
  583.  
  584.  
  585. //--------------------------------------------------------------------------;
  586. //
  587. //  ACM Formats
  588. //
  589. //
  590. //
  591. //
  592. //--------------------------------------------------------------------------;
  593.  
  594. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  595. //
  596. //  acmFormatDetails()
  597. //
  598. //
  599. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  600.  
  601. #define ACMFORMATDETAILS_FORMAT_CHARS   128
  602.  
  603. typedef struct tACMFORMATDETAILS
  604. {
  605.     DWORD           cbStruct;
  606.     DWORD           dwFormatIndex;
  607.     DWORD           dwFormatTag;
  608.     DWORD           fdwSupport;
  609.     LPWAVEFORMATEX  pwfx;
  610.     DWORD           cbwfx;
  611.     WCHAR           szFormat[ACMFORMATDETAILS_FORMAT_CHARS];
  612.  
  613. } ACMFORMATDETAILS, *PACMFORMATDETAILS, FAR *LPACMFORMATDETAILS;
  614.  
  615.  
  616. MMRESULT ACMAPI acmFormatDetails
  617. (
  618.     HACMDRIVER              had,
  619.     LPACMFORMATDETAILS      pafd,
  620.     DWORD                   fdwDetails
  621. );
  622.  
  623. #define ACM_FORMATDETAILSF_INDEX        0x00000000L
  624. #define ACM_FORMATDETAILSF_FORMAT       0x00000001L
  625. #define ACM_FORMATDETAILSF_QUERYMASK    0x0000000FL
  626.  
  627.  
  628.  
  629. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  630. //
  631. //  acmFormatEnum()
  632. //
  633. //
  634. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  635.  
  636. typedef BOOL (CALLBACK *ACMFORMATENUMCB)
  637. (
  638.     HACMDRIVERID            hadid,
  639.     LPACMFORMATDETAILS      pafd,
  640.     DWORD                   dwInstance,
  641.     DWORD                   fdwSupport
  642. );
  643.  
  644. MMRESULT ACMAPI acmFormatEnum
  645. (
  646.     HACMDRIVER              had,
  647.     LPACMFORMATDETAILS      pafd,
  648.     ACMFORMATENUMCB         fnCallback,
  649.     DWORD                   dwInstance, 
  650.     DWORD                   fdwEnum
  651. );
  652.  
  653. #define ACM_FORMATENUMF_WFORMATTAG       0x00010000L
  654. #define ACM_FORMATENUMF_NCHANNELS        0x00020000L
  655. #define ACM_FORMATENUMF_NSAMPLESPERSEC   0x00040000L
  656. #define ACM_FORMATENUMF_WBITSPERSAMPLE   0x00080000L
  657. #define ACM_FORMATENUMF_CONVERT          0x00100000L
  658. #define ACM_FORMATENUMF_SUGGEST          0x00200000L
  659. #define ACM_FORMATENUMF_HARDWARE         0x00400000L
  660. #define ACM_FORMATENUMF_INPUT            0x00800000L
  661. #define ACM_FORMATENUMF_OUTPUT           0x01000000L
  662.  
  663. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  664. //
  665. //  acmFormatSuggest()
  666. //
  667. //
  668. //
  669. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  670.  
  671. MMRESULT ACMAPI acmFormatSuggest
  672. (
  673.     HACMDRIVER          had,
  674.     LPWAVEFORMATEX      pwfxSrc,
  675.     LPWAVEFORMATEX      pwfxDst,
  676.     DWORD               cbwfxDst,
  677.     DWORD               fdwSuggest
  678. );
  679.  
  680. #define ACM_FORMATSUGGESTF_WFORMATTAG       0x00010000L
  681. #define ACM_FORMATSUGGESTF_NCHANNELS        0x00020000L
  682. #define ACM_FORMATSUGGESTF_NSAMPLESPERSEC   0x00040000L
  683. #define ACM_FORMATSUGGESTF_WBITSPERSAMPLE   0x00080000L
  684.  
  685. #define ACM_FORMATSUGGESTF_TYPEMASK         0x00FF0000L
  686.  
  687.  
  688. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  689. //
  690. //  acmFormatChoose()
  691. //
  692. //
  693. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  694.  
  695. #define ACMHELPMSGSTRING        TEXT("acmchoose_help")
  696. #define ACMHELPMSGCONTEXTMENU   TEXT("acmchoose_contextmenu")
  697. #define ACMHELPMSGCONTEXTHELP   TEXT("acmchoose_contexthelp")
  698.  
  699. //
  700. //  MM_ACM_FORMATCHOOSE is sent to hook callbacks by the Format Chooser
  701. //  Dialog...
  702. //
  703. #define MM_ACM_FORMATCHOOSE             (0x8000)
  704.  
  705. #define FORMATCHOOSE_MESSAGE            0
  706. #define FORMATCHOOSE_FORMATTAG_VERIFY   (FORMATCHOOSE_MESSAGE+0)
  707. #define FORMATCHOOSE_FORMAT_VERIFY      (FORMATCHOOSE_MESSAGE+1)
  708. #define FORMATCHOOSE_CUSTOM_VERIFY      (FORMATCHOOSE_MESSAGE+2)
  709.  
  710.  
  711. typedef UINT (CALLBACK *ACMFORMATCHOOSEHOOKPROC)
  712. (
  713.     HWND                    hwnd,
  714.     UINT                    uMsg,
  715.     WPARAM                  wParam,
  716.     LPARAM                  lParam
  717. );
  718.  
  719. //
  720. //
  721. //
  722. //
  723. typedef struct tACMFORMATCHOOSE
  724. {
  725.     DWORD           cbStruct;           // sizeof(ACMFORMATCHOOSE)
  726.     DWORD           fdwStyle;           // chooser style flags
  727.     
  728.     HWND            hwndOwner;          // caller's window handle
  729.  
  730.     LPWAVEFORMATEX  pwfx;               // ptr to wfx buf to receive choice
  731.     DWORD           cbwfx;              // size of mem buf for pwfx
  732.     LPCWSTR         pszTitle;           // dialog box title bar
  733.     
  734.     WCHAR           szFormatTag[ACMFORMATTAGDETAILS_FORMATTAG_CHARS];
  735.     WCHAR           szFormat[ACMFORMATDETAILS_FORMAT_CHARS];    
  736.  
  737.     LPWSTR          pszName;            // custom name selection
  738.     DWORD           cchName;            // size in chars of mem buf for pszName
  739.  
  740.     DWORD           fdwEnum;            // format enumeration restrictions
  741.     LPWAVEFORMATEX  pwfxEnum;           // format describing restrictions
  742.     
  743.     HINSTANCE       hInstance;          // app instance containing dlg template
  744.     LPCWSTR         pszTemplateName;    // custom template name
  745.     LPARAM          lCustData;          // data passed to hook fn.
  746.     ACMFORMATCHOOSEHOOKPROC pfnHook;    // ptr to hook function
  747.  
  748. } ACMFORMATCHOOSE, *PACMFORMATCHOOSE, FAR *LPACMFORMATCHOOSE;
  749.  
  750. //
  751. //  ACMFORMATCHOOSE.fdwStyle
  752. //
  753. //
  754. //
  755. #define ACMFORMATCHOOSE_STYLEF_SHOWHELP              0x00000004L
  756. #define ACMFORMATCHOOSE_STYLEF_ENABLEHOOK            0x00000008L
  757. #define ACMFORMATCHOOSE_STYLEF_ENABLETEMPLATE        0x00000010L
  758. #define ACMFORMATCHOOSE_STYLEF_ENABLETEMPLATEHANDLE  0x00000020L
  759. #define ACMFORMATCHOOSE_STYLEF_INITTOWFXSTRUCT       0x00000040L
  760. #define ACMFORMATCHOOSE_STYLEF_CONTEXTHELP           0x00000080L
  761.  
  762. MMRESULT ACMAPI acmFormatChoose
  763. (
  764.     LPACMFORMATCHOOSE       pafmtc
  765. );
  766.  
  767.  
  768. //--------------------------------------------------------------------------;
  769. //
  770. //  ACM Filter Tags
  771. //
  772. //
  773. //
  774. //
  775. //--------------------------------------------------------------------------;
  776.  
  777. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  778. //
  779. //  acmFilterTagDetails()
  780. //
  781. //
  782. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  783.  
  784. #define ACMFILTERTAGDETAILS_FILTERTAG_CHARS 48
  785.  
  786. typedef struct tACMFILTERTAGDETAILS
  787. {
  788.     DWORD           cbStruct;
  789.     DWORD           dwFilterTagIndex;
  790.     DWORD           dwFilterTag;
  791.     DWORD           cbFilterSize;
  792.     DWORD           fdwSupport;
  793.     DWORD           cStandardFilters;
  794.     WCHAR           szFilterTag[ACMFILTERTAGDETAILS_FILTERTAG_CHARS];
  795.  
  796. } ACMFILTERTAGDETAILS, *PACMFILTERTAGDETAILS, FAR *LPACMFILTERTAGDETAILS;
  797.  
  798. MMRESULT ACMAPI acmFilterTagDetails
  799. (
  800.     HACMDRIVER              had,
  801.     LPACMFILTERTAGDETAILS   paftd,
  802.     DWORD                   fdwDetails
  803. );
  804.  
  805. #define ACM_FILTERTAGDETAILSF_INDEX         0x00000000L
  806. #define ACM_FILTERTAGDETAILSF_FILTERTAG     0x00000001L
  807. #define ACM_FILTERTAGDETAILSF_LARGESTSIZE   0x00000002L
  808. #define ACM_FILTERTAGDETAILSF_QUERYMASK     0x0000000FL
  809.  
  810.  
  811.  
  812. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  813. //
  814. //  acmFilterTagEnum()
  815. //
  816. //
  817. //
  818. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  819.  
  820. typedef BOOL (CALLBACK *ACMFILTERTAGENUMCB)
  821. (
  822.     HACMDRIVERID            hadid,
  823.     LPACMFILTERTAGDETAILS   paftd,
  824.     DWORD                   dwInstance,
  825.     DWORD                   fdwSupport
  826. );
  827.  
  828. MMRESULT ACMAPI acmFilterTagEnum
  829. (
  830.     HACMDRIVER              had,
  831.     LPACMFILTERTAGDETAILS   paftd,
  832.     ACMFILTERTAGENUMCB      fnCallback,
  833.     DWORD                   dwInstance, 
  834.     DWORD                   fdwEnum
  835. );
  836.  
  837.  
  838.  
  839. //--------------------------------------------------------------------------;
  840. //
  841. //  ACM Filters
  842. //
  843. //
  844. //
  845. //
  846. //--------------------------------------------------------------------------;
  847.  
  848. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  849. //
  850. //  acmFilterDetails()
  851. //
  852. //
  853. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  854.  
  855. #define ACMFILTERDETAILS_FILTER_CHARS   128
  856.  
  857. typedef struct tACMFILTERDETAILS
  858. {
  859.     DWORD           cbStruct;
  860.     DWORD           dwFilterIndex;
  861.     DWORD           dwFilterTag;
  862.     DWORD           fdwSupport;
  863.     LPWAVEFILTER    pwfltr;
  864.     DWORD           cbwfltr;
  865.     WCHAR           szFilter[ACMFILTERDETAILS_FILTER_CHARS];
  866.  
  867. } ACMFILTERDETAILS, *PACMFILTERDETAILS, FAR *LPACMFILTERDETAILS;
  868.  
  869. MMRESULT ACMAPI acmFilterDetails
  870. (
  871.     HACMDRIVER              had,
  872.     LPACMFILTERDETAILS      pafd,
  873.     DWORD                   fdwDetails
  874. );
  875.  
  876. #define ACM_FILTERDETAILSF_INDEX        0x00000000L
  877. #define ACM_FILTERDETAILSF_FILTER       0x00000001L
  878. #define ACM_FILTERDETAILSF_QUERYMASK    0x0000000FL
  879.  
  880.  
  881.  
  882. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  883. //
  884. //  acmFilterEnum()
  885. //
  886. //
  887. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  888.  
  889. typedef BOOL (CALLBACK *ACMFILTERENUMCB)
  890. (
  891.     HACMDRIVERID            hadid,
  892.     LPACMFILTERDETAILS      pafd,
  893.     DWORD                   dwInstance,
  894.     DWORD                   fdwSupport
  895. );
  896.  
  897. MMRESULT ACMAPI acmFilterEnum
  898. (
  899.     HACMDRIVER              had,
  900.     LPACMFILTERDETAILS      pafd,
  901.     ACMFILTERENUMCB         fnCallback,
  902.     DWORD                   dwInstance, 
  903.     DWORD                   fdwEnum
  904. );
  905.  
  906. #define ACM_FILTERENUMF_DWFILTERTAG         0x00010000L
  907.  
  908.  
  909.  
  910.  
  911. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  912. //
  913. //  acmFilterChoose()
  914. //
  915. //
  916. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  917.  
  918. //
  919. //  MM_ACM_FILTERCHOOSE is sent to hook callbacks by the Filter Chooser
  920. //  Dialog...
  921. //
  922. #define MM_ACM_FILTERCHOOSE             (0x8000)
  923.  
  924. #define FILTERCHOOSE_MESSAGE            0
  925. #define FILTERCHOOSE_FILTERTAG_VERIFY   (FILTERCHOOSE_MESSAGE+0)
  926. #define FILTERCHOOSE_FILTER_VERIFY      (FILTERCHOOSE_MESSAGE+1)
  927. #define FILTERCHOOSE_CUSTOM_VERIFY      (FILTERCHOOSE_MESSAGE+2)
  928.  
  929.  
  930. typedef UINT (CALLBACK *ACMFILTERCHOOSEHOOKPROC)
  931. (
  932.     HWND                    hwnd,
  933.     UINT                    uMsg,
  934.     WPARAM                  wParam,
  935.     LPARAM                  lParam
  936. );
  937.  
  938. //
  939. //  ACMFILTERCHOOSE
  940. //
  941. //
  942. typedef struct tACMFILTERCHOOSE
  943. {
  944.     DWORD           cbStruct;           // sizeof(ACMFILTERCHOOSE)
  945.     DWORD           fdwStyle;           // chooser style flags
  946.  
  947.     HWND            hwndOwner;          // caller's window handle
  948.  
  949.     LPWAVEFILTER    pwfltr;             // ptr to wfltr buf to receive choice
  950.     DWORD           cbwfltr;            // size of mem buf for pwfltr
  951.  
  952.     LPCWSTR         pszTitle;
  953.  
  954.     WCHAR           szFilterTag[ACMFILTERTAGDETAILS_FILTERTAG_CHARS];
  955.     WCHAR           szFilter[ACMFILTERDETAILS_FILTER_CHARS];
  956.     LPWSTR          pszName;            // custom name selection
  957.     DWORD           cchName;            // size in chars of mem buf for pszName
  958.  
  959.     DWORD           fdwEnum;            // filter enumeration restrictions
  960.     LPWAVEFILTER    pwfltrEnum;         // filter describing restrictions
  961.     
  962.     HINSTANCE       hInstance;          // app instance containing dlg template
  963.     LPCWSTR         pszTemplateName;    // custom template name
  964.     LPARAM          lCustData;          // data passed to hook fn.
  965.     ACMFILTERCHOOSEHOOKPROC pfnHook;    // ptr to hook function
  966.  
  967. } ACMFILTERCHOOSE, *PACMFILTERCHOOSE, FAR *LPACMFILTERCHOOSE;
  968.  
  969. //
  970. //  ACMFILTERCHOOSE.fdwStyle
  971. //
  972. //
  973. #define ACMFILTERCHOOSE_STYLEF_SHOWHELP              0x00000004L
  974. #define ACMFILTERCHOOSE_STYLEF_ENABLEHOOK            0x00000008L
  975. #define ACMFILTERCHOOSE_STYLEF_ENABLETEMPLATE        0x00000010L
  976. #define ACMFILTERCHOOSE_STYLEF_ENABLETEMPLATEHANDLE  0x00000020L
  977. #define ACMFILTERCHOOSE_STYLEF_INITTOFILTERSTRUCT    0x00000040L
  978. #define ACMFILTERCHOOSE_STYLEF_CONTEXTHELP           0x00000080L
  979.  
  980. MMRESULT ACMAPI acmFilterChoose
  981. (
  982.     LPACMFILTERCHOOSE       pafltrc
  983. );
  984.  
  985.  
  986. //--------------------------------------------------------------------------;
  987. //
  988. //  ACM Stream API's
  989. //
  990. //
  991. //
  992. //--------------------------------------------------------------------------;
  993.  
  994. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  995. //
  996. //  acmStreamOpen()
  997. //
  998. //
  999. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  1000.  
  1001. typedef struct tACMSTREAMHEADER
  1002. {
  1003.     DWORD           cbStruct;               // sizeof(ACMSTREAMHEADER)
  1004.     DWORD           fdwStatus;              // ACMSTREAMHEADER_STATUSF_*
  1005.     DWORD           dwUser;                 // user instance data for hdr
  1006.     LPBYTE          pbSrc;
  1007.     DWORD           cbSrcLength;
  1008.     DWORD           cbSrcLengthUsed;
  1009.     DWORD           dwSrcUser;              // user instance data for src
  1010.     LPBYTE          pbDst;
  1011.     DWORD           cbDstLength;
  1012.     DWORD           cbDstLengthUsed;
  1013.     DWORD           dwDstUser;              // user instance data for dst
  1014.     DWORD           dwReservedDriver[10];   // driver reserved work space
  1015.  
  1016. } ACMSTREAMHEADER, *PACMSTREAMHEADER, FAR *LPACMSTREAMHEADER;
  1017.  
  1018. //
  1019. //  ACMSTREAMHEADER.fdwStatus
  1020. //
  1021. //  ACMSTREAMHEADER_STATUSF_DONE: done bit for async conversions.
  1022. //
  1023. #define ACMSTREAMHEADER_STATUSF_DONE        0x00010000L
  1024. #define ACMSTREAMHEADER_STATUSF_PREPARED    0x00020000L
  1025. #define ACMSTREAMHEADER_STATUSF_INQUEUE     0x00100000L
  1026.  
  1027.  
  1028.  
  1029. MMRESULT ACMAPI acmStreamOpen
  1030. (
  1031.     LPHACMSTREAM            phas,       // pointer to stream handle
  1032.     HACMDRIVER              had,        // optional driver handle
  1033.     LPWAVEFORMATEX          pwfxSrc,    // source format to convert
  1034.     LPWAVEFORMATEX          pwfxDst,    // required destination format
  1035.     LPWAVEFILTER            pwfltr,     // optional filter
  1036.     DWORD                   dwCallback, // callback
  1037.     DWORD                   dwInstance, // callback instance data
  1038.     DWORD                   fdwOpen     // ACM_STREAMOPENF_* and CALLBACK_*
  1039. );
  1040.  
  1041. #define ACM_STREAMOPENF_QUERY           0x00000001
  1042. #define ACM_STREAMOPENF_ASYNC           0x00000002
  1043. #define ACM_STREAMOPENF_NONREALTIME     0x00000004
  1044.  
  1045.  
  1046. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  1047. //
  1048. //  acmStreamClose()
  1049. //
  1050. //
  1051. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  1052.  
  1053. MMRESULT ACMAPI acmStreamClose
  1054. (
  1055.     HACMSTREAM              has,
  1056.     DWORD                   fdwClose
  1057. );
  1058.  
  1059.  
  1060.  
  1061. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  1062. //
  1063. //  acmStreamSize()
  1064. //
  1065. //
  1066. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  1067.  
  1068. MMRESULT ACMAPI acmStreamSize
  1069. (
  1070.     HACMSTREAM              has,
  1071.     DWORD                   cbInput,
  1072.     LPDWORD                 pdwOutputBytes,
  1073.     DWORD                   fdwSize
  1074. );
  1075.  
  1076. #define ACM_STREAMSIZEF_SOURCE          0x00000000L
  1077. #define ACM_STREAMSIZEF_DESTINATION     0x00000001L
  1078. #define ACM_STREAMSIZEF_QUERYMASK       0x0000000FL
  1079.  
  1080.  
  1081.  
  1082. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  1083. //
  1084. //  acmStreamReset()
  1085. //
  1086. //
  1087. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  1088.  
  1089. MMRESULT ACMAPI acmStreamReset
  1090. (
  1091.     HACMSTREAM              has,
  1092.     DWORD                   fdwReset
  1093. );
  1094.  
  1095.  
  1096.  
  1097.  
  1098.  
  1099. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  1100. //
  1101. //  acmStreamMessage()
  1102. //
  1103. //
  1104. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  1105.  
  1106. MMRESULT ACMAPI acmStreamMessage
  1107. (
  1108.     HACMSTREAM              has,
  1109.     UINT                    uMsg, 
  1110.     LPARAM                  lParam1,
  1111.     LPARAM                  lParam2
  1112. );
  1113.  
  1114.  
  1115.  
  1116. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  1117. //
  1118. //  acmStreamConvert()
  1119. //
  1120. //
  1121. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  1122.  
  1123. MMRESULT ACMAPI acmStreamConvert
  1124. (
  1125.     HACMSTREAM              has, 
  1126.     LPACMSTREAMHEADER       pash,
  1127.     DWORD                   fdwConvert
  1128. );
  1129.  
  1130. #define ACM_STREAMCONVERTF_BLOCKALIGN   0x00000004
  1131. #define ACM_STREAMCONVERTF_START        0x00000010
  1132. #define ACM_STREAMCONVERTF_END          0x00000020
  1133.  
  1134.  
  1135. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  1136. //
  1137. //  acmStreamPrepareHeader()
  1138. //
  1139. //
  1140. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  1141.  
  1142. MMRESULT ACMAPI acmStreamPrepareHeader
  1143. (
  1144.     HACMSTREAM          has,
  1145.     LPACMSTREAMHEADER   pash,
  1146.     DWORD               fdwPrepare
  1147. );
  1148.  
  1149.  
  1150.  
  1151.  
  1152. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  1153. //
  1154. //  acmStreamUnprepareHeader()
  1155. //
  1156. //
  1157. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  1158.  
  1159. MMRESULT ACMAPI acmStreamUnprepareHeader
  1160. (
  1161.     HACMSTREAM          has,
  1162.     LPACMSTREAMHEADER   pash,
  1163.     DWORD               fdwUnprepare
  1164. );
  1165.                                        
  1166.  
  1167.  
  1168. #ifndef RC_INVOKED
  1169. #pragma pack()          /* Revert to default packing */
  1170. #endif  /* RC_INVOKED */
  1171.  
  1172. #ifdef __cplusplus
  1173. }                       /* End of extern "C" { */
  1174. #endif  /* __cplusplus */
  1175.  
  1176. #endif  /* _INC_ACM */
  1177.  
  1178.  
  1179.